PHPWord

首先要建立一個資料庫並確保能連線

登錄phpmyadmin
新增 database , type = utf8mb4_general_ci

Table Name : visitors

Id int(11) auto_increment

Ip_address text

user_agent text

visited_at text

datetime datetime current_timestamp() ON UPDATE CURRENT_TIMESTAMP

開始使用 Middleware:

Artisan command:
php artisan make:middleware TrackVisitors

Laravel 預設和新創建的 middleware 都存放在 app/Http/Middleware 裡.

 

/var/www/code/app/Http/Middleware/TrackVisitors.php

 

use App\Models\Visitor;

public function handle(Request $request, Closure $next): Response

{

$clientIP = $_SERVER['HTTP_CLIENT_IP']

?? $_SERVER["HTTP_CF_CONNECTING_IP"] # when behind cloudflare

?? $_SERVER['HTTP_X_FORWARDED']

?? $_SERVER['HTTP_X_FORWARDED_FOR']

?? $_SERVER['HTTP_FORWARDED']

?? $_SERVER['HTTP_FORWARDED_FOR']

?? $_SERVER['REMOTE_ADDR']

?? '0.0.0.0';

Visitor::addVisitor($clientIP,$_SERVER['HTTP_USER_AGENT'],'');

 

return $next($request);

}

}

 

 

 

/var/www/dontff/app/Models/ Visitor.php

<?php

 

namespace App\Models;

 

use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Facades\DB;

 

class Visitor extends Model

{

protected $table = 'visitors'; // 資料表名稱

protected $primaryKey = 'id'; // 主鍵

protected $fillable =

['ip_address','user_agent','visited_at'];

public static function addVisitor($ip_address,$user_agent,$visited_at)

{

DB::table('visitors')->insert([

'ip_address' => $ip_address,

'user_agent' => $user_agent,

'visited_at' => $visited_at

]);

}

public static function getTotalVisitor()

{

$data = DB::table('visitors')->get()->count();

return $data;

}

}

 

 

 

 

<?php

use App\Models\Visitor;

//echo Visitor::getTotalVisitor();

?>

<?php echo Visitor::getTotalVisitor(); ?>

 

/var/www/dontff/bootstrap/app.php

 

use App\Http\Middleware\TrackVisitors;

->withRouting(

web: __DIR__.'/../routes/web.php',

commands: __DIR__.'/../routes/console.php',

health: '/up',

)

->withMiddleware(function (Middleware $middleware): void {

//

$middleware->append(TrackVisitors::class);

})

->withExceptions(function (Exceptions $exceptions): void {

//

})->create();

 

 

Connect Database

.env

B_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=code

 

Error:

Base table or view not found: 1146 Table 'code.sessions' doesn't exist 

 

 打开项目根目录下的 .env 文件。

 找到 SESSION_DRIVER(较新版本中可能为 SESSION_STORE),将其修改为:

env

SESSION_DRIVER=file

 

CACHE_STORE=file

php artisan config:clear php artisan cache:clear

 

 

Middleware Parameters

TrackVisitors

Visitor::addVisitor($clientIP,$_SERVER['HTTP_USER_AGENT'],$request->route('fileName'));
/var/www/code/bootstrap/app.php

->withMiddleware(function (Middleware $middleware): void {

//

//$middleware->append(TrackVisitors::class);

$middleware->alias([

'TrackVisitors' => \App\Http\Middleware\TrackVisitors::class,

]);

})

Route

Route::get('/genrateWordPage/{fileName}', function($fileName)

{

return View::make('pages.genrateWordPage')->with('fileName', $fileName);

})->middleware('TrackVisitors');